#ifndef _LGY_STL_CONSTRUCT_H
#define _LGY_STL_CONSTRUCT_H

/*
 * autor: 卢广宇
 * time: 2021/11/6
 *
 * function: 构造/析构对象相关接口定义
 */

#include <new>  //for palcment new

namespace lgy
{

/*
 * 功能：将obj复制到p指向的空间中
 * 参数：p:起始地址，obj:对象
 *
 * ret: 无
 */
template <typename T1, typename T2>
inline void construct(T1 *p, const T2& val){
	new ((void *)p) T1(val);	//T1::T1(val)
}

//调用对象析构函数，释放空间
template <typename T>
inline void destroy(T* p){
	p->~T();		//T::~T()
}


};

#endif
